package com.hzz.dto.report;

import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.hzz.framework.dto.BaseDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.Size;
import java.util.Date;
import java.util.List;

@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
@ApiModel("事件上报 完整 DTO")
public class ReportEventDto extends BaseDto {
    @ApiModelProperty("id")
    Long id;
    @ApiModelProperty("巡查任务id")
    Long patrolTaskId;
    @ApiModelProperty("上报时间")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    Date reportingDate;
    @ApiModelProperty("上报类型(0巡河事件,1公众投诉,2重点项目,3常规任务,4紧急任务)")
    Integer reportingType;
    @ApiModelProperty("上报人id")
    Long reportingUserId;
    @ApiModelProperty("上报人名称")
    @Size(max = 55, message = "reportingUserName最大55字符")
    String reportingUserName;
    @ApiModelProperty("上报人联系电话")
    @Size(max = 55, message = "reportingUserCellphone最大15字符")
    String reportingUserCellphone;
    @ApiModelProperty("上报河道id")
    @Size(max = 55, message = "riverId最大55字符")
    String riverId;
    @ApiModelProperty("上报河道名称")
    @Size(max = 55, message = "riverName最大55字符")
    String riverName;
    @ApiModelProperty("事件进度(0上报,1处理,2结案)")
    Integer state;
    @ApiModelProperty("督办单号")
    @Size(max = 55, message = "supervisionCode最大55字符")
    String supervisionCode;
    @ApiModelProperty("督办联系人电话")
    @Size(max = 55, message = "supervisionContactCellphone最大55字符")
    String supervisionContactCellphone;
    @ApiModelProperty("督办联系人id")
    Long supervisionContactId;
    @ApiModelProperty("督办联系人名称")
    @Size(max = 55, message = "supervisionContactName最大55字符")
    String supervisionContactName;
    @ApiModelProperty("督办内容")
    @Size(max = 255, message = "supervisionContent最大255字符")
    String supervisionContent;
    @ApiModelProperty("督办发起时间")
    @JSONField(format = "yyyy-MM-dd")
    Date supervisionDate;
    @ApiModelProperty("督办要求")
    @Size(max = 1255, message = "supervisionDemand最大1255字符")
    String supervisionDemand;
    @ApiModelProperty("督办对象(0个人,1机构)")
    Integer supervisionTarget;
    @ApiModelProperty("督办标题")
    @Size(max = 55, message = "supervisionTitle最大55字符")
    String supervisionTitle;
    @ApiModelProperty("督办类型(0巡河事件,1公众投诉,2重点项目,3常规任务,4紧急任务)")
    Integer supervisionType;
    @ApiModelProperty("事件处理行政区划id")
    @Size(max = 85, message = "treatmentAreaId最大85字符")
    String treatmentAreaId;
    @ApiModelProperty("事件处理行政区划名称")
    @Size(max = 255, message = "treatmentAreaName最大255字符")
    String treatmentAreaName;
    @ApiModelProperty("事件处理备注")
    @Size(max = 55, message = "treatmentMemo最大55字符")
    String treatmentMemo;
    @ApiModelProperty("事件处理机构id")
    Long treatmentOrgId;
    @ApiModelProperty("事件处理机构名称")
    @Size(max = 55, message = "treatmentOrgName最大55字符")
    String treatmentOrgName;
    @ApiModelProperty("事件处理后照片")
    @Size(max = 1255, message = "treatmentPostPics最大1255字符")
    String treatmentPostPics;
    @ApiModelProperty("事件处理前照片")
    @Size(max = 1255, message = "treatmentPrePics最大1255字符")
    String treatmentPrePics;
    @ApiModelProperty("事件处理河段id")
    Long treatmentReachId;
    @ApiModelProperty("事件处理河段名称")
    @Size(max = 55, message = "treatmentReachName最大55字符")
    String treatmentReachName;
    @ApiModelProperty("事件处理方式:0直接处理,1分配处理,2报河长办处理,3报上级河长处理")
    Integer treatmentType;
    @ApiModelProperty("事件处理人员id")
    Long treatmentUserId;
    @ApiModelProperty("事件处理人员角色")
    @Size(max = 1, message = "treatmentUserJob最大55字符")
    String treatmentUserJob;
    @ApiModelProperty("事件处理人员名称")
    @Size(max = 55, message = "treatmentUserName最大55字符")
    String treatmentUserName;
    @ApiModelProperty("版本号")
    Integer version;
    @ApiModelProperty("建立者id")
    Long createId;
    @ApiModelProperty("创建时间")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    Date dateCreated;
    @ApiModelProperty("结果反馈")
    @Size(max = 255, message = "resultFeedback最大255字符")
    String resultFeedback;

    @ApiModelProperty("经度")
    String longitude;
    @ApiModelProperty("纬度")
    String latitude;
    @ApiModelProperty("事件处理时间")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    Date treatmentDate;
    @ApiModelProperty("督办完成期限")
    @JSONField(format = "yyyy-MM-dd")
    Date dateDeadline;
    @ApiModelProperty("巡查时间")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    Date datePatrol;
    @ApiModelProperty("更新时间")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    Date dateUpdated;
    @ApiModelProperty("备注")
    @Size(max = 255, message = "memo最大255字符")
    String memo;
    @ApiModelProperty("排序")
    Integer orderNo;
    @ApiModelProperty("删除标记")
    Integer delFlag;
    @ApiModelProperty("责任单位id")
    Long dutyOrgId;
    @ApiModelProperty("责任单位名称")
    @Size(max = 55, message = "dutyOrgName最大55字符")
    String dutyOrgName;
    @ApiModelProperty("责任人id")
    Long dutyUserId;
    @ApiModelProperty("责任人名称")
    @Size(max = 55, message = "dutyUserName最大55字符")
    String dutyUserName;
    @ApiModelProperty("事件描述")
    @Size(max = 55, message = "eventInfo最大55字符")
    String eventInfo;
    @ApiModelProperty("事件类型(无问题,河岸倾倒垃圾,生活非法排污,工业区非法排污,非法采砂,河道及禁养区非法养殖,河湖岸线乱搭乱建,电鱼毒鱼,饮用水源地污染,河面漂浮物及垃圾,面源污染,重金属污染,场镇污水处理厂未建设,场镇污水处理厂未运行,场镇污水处理厂处理不达标,场镇污水管网收集率不高,电站截留生态流量,其他问题)")
    @Size(max = 55, message = "eventType最大55字符")
    String eventType;
    @ApiModelProperty("关注状态0否1是")
    Integer followState;

    Integer userType;
    Long currUserId;
    List<Long> riverIds;

    /**
     * 当前处理人所在河道id (报上级河长或河长办用到)
     */
    Long currentTreatmentRiverId;

    /**
     * 当前处理人上级河道id (报上级河长或河长办用到)
     */
    Long parentTreatmentRiverId;
    /**
     * 完结状态 0否1是
     */
    Integer isFinish;
}
